Autogenerated HTML docs for v2.33.1-637-gf443b 
diff --git a/RelNotes/2.33.1.txt b/RelNotes/2.33.1.txt new file mode 100644 index 0000000..b71738e --- /dev/null +++ b/RelNotes/2.33.1.txt 
@@ -0,0 +1,138 @@ +Git 2.33.1 Release Notes +======================== + +This primarily is to backport various fixes accumulated during the +development towards Git 2.34, the next feature release. + + +Fixes since v2.33 +----------------- + + * The unicode character width table (used for output alignment) has + been updated. + + * Input validation of "git pack-objects --stdin-packs" has been + corrected. + + * Bugfix for common ancestor negotiation recently introduced in "git + push" codepath. + + * "git pull" had various corner cases that were not well thought out + around its --rebase backend, e.g. "git pull --ff-only" did not stop + but went ahead and rebased when the history on other side is not a + descendant of our history. The series tries to fix them up. + + * "git apply" miscounted the bytes and failed to read to the end of + binary hunks. + + * "git range-diff" code clean-up. + + * "git commit --fixup" now works with "--edit" again, after it was + broken in v2.32. + + * Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the + new version has a blocker bug for that architecture. + + * Checking out all the paths from HEAD during the last conflicted + step in "git rebase" and continuing would cause the step to be + skipped (which is expected), but leaves MERGE_MSG file behind in + $GIT_DIR and confuses the next "git commit", which has been + corrected. + + * Various bugs in "git rebase -r" have been fixed. + + * mmap() imitation used to call xmalloc() that dies upon malloc() + failure, which has been corrected to just return an error to the + caller to be handled. + + * "git diff --relative" segfaulted and/or produced incorrect result + when there are unmerged paths. + + * The delayed checkout code path in "git checkout" etc. were chatty + even when --quiet and/or --no-progress options were given. + + * "git branch -D <branch>" used to refuse to remove a broken branch + ref that points at a missing commit, which has been corrected. + + * Build update for Apple clang. + + * The parser for the "--nl" option of "git column" has been + corrected. + + * "git upload-pack" which runs on the other side of "git fetch" + forgot to take the ref namespaces into account when handling + want-ref requests. + + * The sparse-index support can corrupt the index structure by storing + a stale and/or uninitialized data, which has been corrected. + + * Buggy tests could damage repositories outside the throw-away test + area we created. We now by default export GIT_CEILING_DIRECTORIES + to limit the damage from such a stray test. + + * Even when running "git send-email" without its own threaded + discussion support, a threading related header in one message is + carried over to the subsequent message to result in an unwanted + threading, which has been corrected. + + * The output from "git fast-export", when its anonymization feature + is in use, showed an annotated tag incorrectly. + + * Recent "diff -m" changes broke "gitk", which has been corrected. + + * "git maintenance" scheduler fix for macOS. + + * A pathname in an advice message has been made cut-and-paste ready. + + * The "git apply -3" code path learned not to bother the lower level + merge machinery when the three-way merge can be trivially resolved + without the content level merge. + + * The code that optionally creates the *.rev reverse index file has + been optimized to avoid needless computation when it is not writing + the file out. + + * "git range-diff -I... <range> <range>" segfaulted, which has been + corrected. + + * The order in which various files that make up a single (conceptual) + packfile has been reevaluated and straightened up. This matters in + correctness, as an incomplete set of files must not be shown to a + running Git. + + * The "mode" word is useless in a call to open(2) that does not + create a new file. Such a call in the files backend of the ref + subsystem has been cleaned up. + + * "git update-ref --stdin" failed to flush its output as needed, + which potentially led the conversation to a deadlock. + + * When "git am --abort" fails to abort correctly, it still exited + with exit status of 0, which has been corrected. + + * Correct nr and alloc members of strvec struct to be of type size_t. + + * "git stash", where the tentative change involves changing a + directory to a file (or vice versa), was confused, which has been + corrected. + + * "git clone" from a repository whose HEAD is unborn into a bare + repository didn't follow the branch name the other side used, which + is corrected. + + * "git cvsserver" had a long-standing bug in its authentication code, + which has finally been corrected (it is unclear and is a separate + question if anybody is seriously using it, though). + + * "git difftool --dir-diff" mishandled symbolic links. + + * Sensitive data in the HTTP trace were supposed to be redacted, but + we failed to do so in HTTP/2 requests. + + * "make clean" has been updated to remove leftover .depend/ + directories, even when it is not told to use them to compute header + dependencies. + + * Protocol v0 clients can get stuck parsing a malformed feature line. + +Also contains various documentation updates and code clean-ups. 
diff --git a/RelNotes/2.34.0.txt b/RelNotes/2.34.0.txt index 6c9c530..0bfeaea 100644 --- a/RelNotes/2.34.0.txt +++ b/RelNotes/2.34.0.txt 
@@ -62,6 +62,10 @@  * The ref iteration code used to optionally allow dangling refs to be  shown, which has been tightened up.   + * "git add", "git mv", and "git rm" have been adjusted to avoid + updating paths outside of the sparse-checkout definition unless + the user specifies a "--sparse" option. +    Performance, Internal Implementation, Development Support etc.   @@ -146,211 +150,154 @@    * CI learns to run the leak sanitizer builds.   + * "git grep --recurse-submodules" takes trees and blobs from the + submodule repository, but the textconv settings when processing a + blob from the submodule is not taken from the submodule repository. + A test is added to demonstrate the issue, without fixing it. + + * Teach "git help -c" into helping the command line completion of + configuration variables. + + * When "git cmd -h" shows more than one line of usage text (e.g. + the cmd subcommand may take sub-sub-command), parse-options API + learned to align these lines, even across i18n/l10n. + + * Prevent "make sparse" from running for the source files that + haven't been modified. +    Fixes since v2.33  -----------------    * Input validation of "git pack-objects --stdin-packs" has been  corrected. - (merge 561fa03529 ab/pack-stdin-packs-fix later to maint).    * Bugfix for common ancestor negotiation recently introduced in "git  push" code path. - (merge 82823118b9 jt/push-negotiation-fixes later to maint).    * "git pull" had various corner cases that were not well thought out  around its --rebase backend, e.g. "git pull --ff-only" did not stop  but went ahead and rebased when the history on other side is not a  descendant of our history. The series tries to fix them up. - (merge 6f843a3355 en/pull-conflicting-options later to maint).    * "git apply" miscounted the bytes and failed to read to the end of  binary hunks. - (merge 46d723ce57 jk/apply-binary-hunk-parsing-fix later to maint).    * "git range-diff" code clean-up. - (merge c4d5907324 jk/range-diff-fixes later to maint).    * "git commit --fixup" now works with "--edit" again, after it was  broken in v2.32. - (merge 8ef6aad664 jk/commit-edit-fixup-fix later to maint).    * Use upload-artifacts v1 (instead of v2) for 32-bit linux, as the  new version has a blocker bug for that architecture. - (merge 3cf9bb36bf cb/ci-use-upload-artifacts-v1 later to maint).    * Checking out all the paths from HEAD during the last conflicted  step in "git rebase" and continuing would cause the step to be  skipped (which is expected), but leaves MERGE_MSG file behind in  $GIT_DIR and confuses the next "git commit", which has been  corrected. - (merge e5ee33e855 pw/rebase-skip-final-fix later to maint).    * Various bugs in "git rebase -r" have been fixed. - (merge f2563c9ef3 pw/rebase-r-fixes later to maint).    * mmap() imitation used to call xmalloc() that dies upon malloc()  failure, which has been corrected to just return an error to the  caller to be handled. - (merge 95b4ff3931 rs/git-mmap-uses-malloc later to maint).    * "git diff --relative" segfaulted and/or produced incorrect result  when there are unmerged paths. - (merge 8174627b3d dd/diff-files-unmerged-fix later to maint).    * The delayed checkout code path in "git checkout" etc. were chatty  even when --quiet and/or --no-progress options were given. - (merge 7a132c628e mt/quiet-with-delayed-checkout later to maint).    * "git branch -D <branch>" used to refuse to remove a broken branch  ref that points at a missing commit, which has been corrected. - (merge 597a977489 rs/branch-allow-deleting-dangling later to maint).    * Build update for Apple clang. - (merge f32c5d3716 cb/makefile-apple-clang later to maint).    * The parser for the "--nl" option of "git column" has been  corrected. - (merge c93ca46cf5 sg/column-nl later to maint).    * "git upload-pack" which runs on the other side of "git fetch"  forgot to take the ref namespaces into account when handling  want-ref requests. - (merge 53a66ec37c ka/want-ref-in-namespace later to maint).    * The sparse-index support can corrupt the index structure by storing  a stale and/or uninitialized data, which has been corrected. - (merge d9e9b44d7a jh/sparse-index-resize-fix later to maint).    * Buggy tests could damage repositories outside the throw-away test  area we created. We now by default export GIT_CEILING_DIRECTORIES  to limit the damage from such a stray test. - (merge 614c3d8f2e sg/set-ceiling-during-tests later to maint).    * Even when running "git send-email" without its own threaded  discussion support, a threading related header in one message is  carried over to the subsequent message to result in an unwanted  threading, which has been corrected. - (merge e082113484 mh/send-email-reset-in-reply-to later to maint).    * The output from "git fast-export", when its anonymization feature  is in use, showed an annotated tag incorrectly. - (merge 2f040a9671 tk/fast-export-anonymized-tag-fix later to maint).    * Doc update plus improved error reporting. - (merge 1e93770888 jk/log-warn-on-bogus-encoding later to maint).    * Recent "diff -m" changes broke "gitk", which has been corrected. - (merge 5acffd3473 so/diff-index-regression-fix later to maint).    * Regression fix. - (merge b996f84989 ab/send-email-config-fix later to maint).    * The "git apply -3" code path learned not to bother the lower level  merge machinery when the three-way merge can be trivially resolved  without the content level merge. This fixes a regression caused by  recent "-3way first and fall back to direct application" change. - (merge 57f183b698 jc/trivial-threeway-binary-merge later to maint).    * The code that optionally creates the *.rev reverse index file has  been optimized to avoid needless computation when it is not writing  the file out. - (merge 8fe8bae9d2 ab/reverse-midx-optim later to maint).    * "git range-diff -I... <range> <range>" segfaulted, which has been  corrected. - (merge 709b3f32d3 rs/range-diff-avoid-segfault-with-I later to maint).    * The order in which various files that make up a single (conceptual)  packfile has been reevaluated and straightened up. This matters in  correctness, as an incomplete set of files must not be shown to a  running Git. - (merge 4bc1fd6e39 tb/pack-finalize-ordering later to maint).    * The "mode" word is useless in a call to open(2) that does not  create a new file. Such a call in the files backend of the ref  subsystem has been cleaned up. - (merge 35cf94eaf6 rs/no-mode-to-open-when-appending later to maint).    * "git update-ref --stdin" failed to flush its output as needed,  which potentially led the conversation to a deadlock. - (merge 7c1200745b ps/update-ref-batch-flush later to maint).    * When "git am --abort" fails to abort correctly, it still exited  with exit status of 0, which has been corrected. - (merge c5ead19ea2 en/am-abort-fix later to maint).    * Correct nr and alloc members of strvec struct to be of type size_t. - (merge 8d133a4653 jk/strvec-typefix later to maint).    * "git stash", where the tentative change involves changing a  directory to a file (or vice versa), was confused, which has been  corrected. - (merge bee8691f19 en/stash-df-fix later to maint).    * "git clone" from a repository whose HEAD is unborn into a bare  repository didn't follow the branch name the other side used, which  is corrected. - (merge 6b58df54cf jk/clone-unborn-head-in-bare later to maint).    * "git cvsserver" had a long-standing bug in its authentication code,  which has finally been corrected (it is unclear and is a separate  question if anybody is seriously using it, though). - (merge 4b81f690f6 cb/cvsserver later to maint).    * "git difftool --dir-diff" mishandled symbolic links. - (merge 5bafb3576a da/difftool-dir-diff-symlink-fix later to maint).    * Sensitive data in the HTTP trace were supposed to be redacted, but  we failed to do so in HTTP/2 requests. - (merge b66c77a64e jk/http-redact-fix later to maint).    * "make clean" has been updated to remove leftover .depend/  directories, even when it is not told to use them to compute header  dependencies. - (merge f0a74bcb03 ab/make-clean-depend-dirs later to maint).    * Protocol v0 clients can get stuck parsing a malformed feature line. - (merge 44d2aec6e8 ah/connect-parse-feature-v0-fix later to maint). + + * A few kinds of changes "git status" can show were not documented. + (merge d2a534c515 ja/doc-status-types-and-copies later to maint).    * Other code cleanup, docfix, build fix, etc. - (merge 1d9c8daef8 ab/bundle-doc later to maint). - (merge 81483fe613 en/merge-strategy-docs later to maint). - (merge 626beebdf8 js/log-protocol-version later to maint). - (merge 00e302da76 cb/builtin-merge-format-string-fix later to maint). - (merge ad51ae4dc0 cb/ci-freebsd-update later to maint). - (merge be6444d1ca fc/completion-updates later to maint). - (merge ff7b83f562 ti/tcsh-completion-regression-fix later to maint). - (merge 325b06deda sg/make-fix-ar-invocation later to maint). - (merge bd72824c60 me/t5582-cleanup later to maint). - (merge f6a5af0f62 ga/send-email-sendmail-cmd later to maint). - (merge f58c7468cd ab/ls-remote-packet-trace later to maint). - (merge 0160f7e725 ab/rebase-fatal-fatal-fix later to maint). - (merge a16eb6b1ff js/maintenance-launchctl-fix later to maint). - (merge c21b2511c2 jk/t5323-no-pack-test-fix later to maint). - (merge 5146c2f148 mh/credential-leakfix later to maint). - (merge 1549577338 dd/t6300-wo-gpg-fix later to maint). - (merge 66e905b7dd rs/xopen-reports-open-failures later to maint). - (merge 469888e6a5 es/walken-tutorial-fix later to maint). - (merge 88682b016d ba/object-info later to maint). - (merge b45c172e51 ab/gc-log-rephrase later to maint). - (merge ccdd5d1eb1 ab/mailmap-leakfix later to maint). - (merge 6540b71614 cb/remote-ndebug-fix later to maint). - (merge e4f8d27585 rs/show-branch-simplify later to maint). - (merge e124ecf7f7 rs/archive-use-object-id later to maint). - (merge cebead1ebf cb/ci-build-pedantic later to maint). - (merge ca0cc98e03 bs/doc-bugreport-outdir later to maint). - (merge 72b113e562 ab/no-more-check-bindir later to maint). - (merge 92a5d1c9b4 jc/prefix-filename-allocates later to maint). - (merge d9a65b6c0a rs/setup-use-xopen-and-xdup later to maint). - (merge e8f55568de jk/t5562-racefix later to maint). - (merge 8f0f110156 rs/drop-core-compression-vars later to maint). - (merge b6d8887d3d ma/doc-git-version later to maint). - (merge 66c0c44df6 cb/plug-leaks-in-alloca-emu-users later to maint). - (merge afb32e8101 kz/revindex-comment-fix later to maint). - (merge ae578de926 po/git-config-doc-mentions-help-c later to maint). - (merge 187fc8b8b6 cb/unicode-14 later to maint). - (merge 3584cff71c en/typofixes later to maint).  (merge f188160be9 ab/bundle-remove-verbose-option later to maint).  (merge 8c6b4332b4 rs/close-pack-leakfix later to maint).  (merge 51b04c05b7 bs/difftool-msg-tweak later to maint). 
diff --git a/diff-format.txt b/diff-format.txt index fbbd410..7a9c3b6 100644 --- a/diff-format.txt +++ b/diff-format.txt 
@@ -59,7 +59,7 @@  - D: deletion of a file  - M: modification of the contents or mode of a file  - R: renaming of a file -- T: change in the type of the file +- T: change in the type of the file (regular file, symbolic link or submodule)  - U: file is unmerged (you must complete the merge before it can  be committed)  - X: "unknown" change type (most probably a bug, please report it) 
diff --git a/git-add.html b/git-add.html index 6665c93..6656335 100644 --- a/git-add.html +++ b/git-add.html 
@@ -750,7 +750,7 @@  <div class="sectionbody">   <div class="verseblock">   <pre class="content"><em>git add</em> [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]  - [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]]  + [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]] [--sparse]   [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize]   [--chmod=(+|-)x] [--pathspec-from-file=&lt;file&gt; [--pathspec-file-nul]]   [--] [&lt;pathspec&gt;&#8230;]</pre>  @@ -847,6 +847,18 @@  </p>   </dd>   <dt class="hdlist1">  +--sparse  +</dt>  +<dd>  +<p>  + Allow updating index entries outside of the sparse-checkout cone.  + Normally, <code>git add</code> refuses to update index entries whose paths do  + not fit within the sparse-checkout cone, since those files might  + be removed from the working tree without warning. See  + <a href="git-sparse-checkout.html">git-sparse-checkout(1)</a> for more details.  +</p>  +</dd>  +<dt class="hdlist1">   -i   </dt>   <dt class="hdlist1">  @@ -1375,7 +1387,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2020-03-10 15:02:33 PDT  + 2021-10-14 10:10:01 PDT   </div>   </div>   </body>  
diff --git a/git-add.txt b/git-add.txt index be5e3ac..11eb70f 100644 --- a/git-add.txt +++ b/git-add.txt 
@@ -9,7 +9,7 @@  --------  [verse]  'git add' [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p] - [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]] + [--edit | -e] [--[no-]all | --[no-]ignore-removal | [--update | -u]] [--sparse]  [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize]  [--chmod=(+|-)x] [--pathspec-from-file=<file> [--pathspec-file-nul]]  [--] [<pathspec>...] @@ -79,6 +79,13 @@  --force:: 	Allow adding otherwise ignored files.   +--sparse:: +	Allow updating index entries outside of the sparse-checkout cone. +	Normally, `git add` refuses to update index entries whose paths do +	not fit within the sparse-checkout cone, since those files might +	be removed from the working tree without warning. See +	linkgit:git-sparse-checkout[1] for more details. +  -i::  --interactive:: 	Add modified contents in the working tree interactively to 
diff --git a/git-checkout.html b/git-checkout.html index 3088185..db285b1 100644 --- a/git-checkout.html +++ b/git-checkout.html 
@@ -907,8 +907,9 @@  <dd>   <p>   When switching branches, proceed even if the index or the  - working tree differs from <code>HEAD</code>. This is used to throw away  - local changes.  + working tree differs from <code>HEAD</code>, and even if there are untracked  + files in the way. This is used to throw away local changes and  + any untracked files or directories that are in the way.   </p>   <div class="paragraph"><p>When checking out paths from the index, do not fail upon unmerged   entries; instead, unmerged entries are ignored.</p></div>  @@ -1560,7 +1561,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2020-11-01 22:43:13 PST  + 2021-10-14 10:10:01 PDT   </div>   </div>   </body>  
diff --git a/git-checkout.txt b/git-checkout.txt index b1a6fe4..d473c9b 100644 --- a/git-checkout.txt +++ b/git-checkout.txt 
@@ -118,8 +118,9 @@  -f::  --force:: 	When switching branches, proceed even if the index or the -	working tree differs from `HEAD`. This is used to throw away -	local changes. +	working tree differs from `HEAD`, and even if there are untracked +	files in the way. This is used to throw away local changes and +	any untracked files or directories that are in the way.  +  When checking out paths from the index, do not fail upon unmerged  entries; instead, unmerged entries are ignored. 
diff --git a/git-diff-files.html b/git-diff-files.html index cba524a..b9e9c58 100644 --- a/git-diff-files.html +++ b/git-diff-files.html 
@@ -2251,7 +2251,7 @@  </li>   <li>   <p>  -T: change in the type of the file  +T: change in the type of the file (regular file, symbolic link or submodule)   </p>   </li>   <li>  
diff --git a/git-diff-index.html b/git-diff-index.html index b52f78c..79fde91 100644 --- a/git-diff-index.html +++ b/git-diff-index.html 
@@ -2245,7 +2245,7 @@  </li>   <li>   <p>  -T: change in the type of the file  +T: change in the type of the file (regular file, symbolic link or submodule)   </p>   </li>   <li>  
diff --git a/git-diff-tree.html b/git-diff-tree.html index 33f7e6f..f75c4fa 100644 --- a/git-diff-tree.html +++ b/git-diff-tree.html 
@@ -3508,7 +3508,7 @@  </li>   <li>   <p>  -T: change in the type of the file  +T: change in the type of the file (regular file, symbolic link or submodule)   </p>   </li>   <li>  
diff --git a/git-diff.html b/git-diff.html index 58c76c6..116f279 100644 --- a/git-diff.html +++ b/git-diff.html 
@@ -2383,7 +2383,7 @@  </li>   <li>   <p>  -T: change in the type of the file  +T: change in the type of the file (regular file, symbolic link or submodule)   </p>   </li>   <li>  
diff --git a/git-help.html b/git-help.html index ea43958..6e518e0 100644 --- a/git-help.html +++ b/git-help.html 
@@ -749,8 +749,10 @@  <h2 id="_synopsis">SYNOPSIS</h2>   <div class="sectionbody">   <div class="verseblock">  -<pre class="content"><em>git help</em> [-a|--all [--[no-]verbose]] [-g|--guides]  - [-i|--info|-m|--man|-w|--web] [COMMAND|GUIDE]</pre>  +<pre class="content"><em>git help</em> [-a|--all [--[no-]verbose]]  + [[-i|--info] [-m|--man] [-w|--web]] [COMMAND|GUIDE]  +<em>git help</em> [-g|--guides]  +<em>git help</em> [-c|--config]</pre>   <div class="attribution">   </div></div>   </div>  @@ -823,8 +825,7 @@  </dt>   <dd>   <p>  - Prints a list of the Git concept guides on the standard output. This  - option overrides any given command or guide name.  + Prints a list of the Git concept guides on the standard output.   </p>   </dd>   <dt class="hdlist1">  @@ -1011,7 +1012,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2020-08-10 16:45:05 PDT  + 2021-10-14 10:10:01 PDT   </div>   </div>   </body>  
diff --git a/git-help.txt b/git-help.txt index 44fe886..96d5f59 100644 --- a/git-help.txt +++ b/git-help.txt 
@@ -8,8 +8,10 @@  SYNOPSIS  --------  [verse] -'git help' [-a|--all [--[no-]verbose]] [-g|--guides] - [-i|--info|-m|--man|-w|--web] [COMMAND|GUIDE] +'git help' [-a|--all [--[no-]verbose]] + [[-i|--info] [-m|--man] [-w|--web]] [COMMAND|GUIDE] +'git help' [-g|--guides] +'git help' [-c|--config]    DESCRIPTION  ----------- @@ -58,8 +60,7 @@    -g::  --guides:: -	Prints a list of the Git concept guides on the standard output. This -	option overrides any given command or guide name. +	Prints a list of the Git concept guides on the standard output.    -i::  --info:: 
diff --git a/git-read-tree.html b/git-read-tree.html index 993c2cd..f0be92e 100644 --- a/git-read-tree.html +++ b/git-read-tree.html 
@@ -750,8 +750,7 @@  <div class="sectionbody">   <div class="verseblock">   <pre class="content"><em>git read-tree</em> [[-m [--trivial] [--aggressive] | --reset | --prefix=&lt;prefix&gt;]  - [-u [--exclude-per-directory=&lt;gitignore&gt;] | -i]]  - [--index-output=&lt;file&gt;] [--no-sparse-checkout]  + [-u | -i]] [--index-output=&lt;file&gt;] [--no-sparse-checkout]   (--empty | &lt;tree-ish1&gt; [&lt;tree-ish2&gt; [&lt;tree-ish3&gt;]])</pre>   <div class="attribution">   </div></div>  @@ -792,8 +791,9 @@  <dd>   <p>   Same as -m, except that unmerged entries are discarded instead  - of failing. When used with <code>-u</code>, updates leading to loss of  - working tree changes will not abort the operation.  + of failing. When used with <code>-u</code>, updates leading to loss of  + working tree changes or untracked files or directories will not  + abort the operation.   </p>   </dd>   <dt class="hdlist1">  @@ -893,26 +893,6 @@  </p>   </dd>   <dt class="hdlist1">  ---exclude-per-directory=&lt;gitignore&gt;  -</dt>  -<dd>  -<p>  - When running the command with <code>-u</code> and <code>-m</code> options, the  - merge result may need to overwrite paths that are not  - tracked in the current branch. The command usually  - refuses to proceed with the merge to avoid losing such a  - path. However this safety valve sometimes gets in the  - way. For example, it often happens that the other  - branch added a file that used to be a generated file in  - your branch, and the safety valve triggers when you try  - to switch to that branch after you ran <code>make</code> but before  - running <code>make clean</code> to remove the generated file. This  - option tells the command to read per-directory exclude  - file (usually <em>.gitignore</em>) and allows such an untracked  - but explicitly ignored file to be overwritten.  -</p>  -</dd>  -<dt class="hdlist1">   --index-output=&lt;file&gt;   </dt>   <dd>  @@ -1306,7 +1286,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2020-05-04 16:14:16 PDT  + 2021-10-14 10:10:01 PDT   </div>   </div>   </body>  
diff --git a/git-read-tree.txt b/git-read-tree.txt index 5fa8bab..8c3aceb 100644 --- a/git-read-tree.txt +++ b/git-read-tree.txt 
@@ -10,8 +10,7 @@  --------  [verse]  'git read-tree' [[-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>] -	[-u [--exclude-per-directory=<gitignore>] | -i]] -	[--index-output=<file>] [--no-sparse-checkout] +	[-u | -i]] [--index-output=<file>] [--no-sparse-checkout] 	(--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])     @@ -39,8 +38,9 @@    --reset:: 	Same as -m, except that unmerged entries are discarded instead -	of failing. When used with `-u`, updates leading to loss of -	working tree changes will not abort the operation. +	of failing. When used with `-u`, updates leading to loss of +	working tree changes or untracked files or directories will not +	abort the operation.    -u:: 	After a successful merge, update the files in the work @@ -88,21 +88,6 @@ 	The command will refuse to overwrite entries that already 	existed in the original index file.   ---exclude-per-directory=<gitignore>:: -	When running the command with `-u` and `-m` options, the -	merge result may need to overwrite paths that are not -	tracked in the current branch. The command usually -	refuses to proceed with the merge to avoid losing such a -	path. However this safety valve sometimes gets in the -	way. For example, it often happens that the other -	branch added a file that used to be a generated file in -	your branch, and the safety valve triggers when you try -	to switch to that branch after you ran `make` but before -	running `make clean` to remove the generated file. This -	option tells the command to read per-directory exclude -	file (usually '.gitignore') and allows such an untracked -	but explicitly ignored file to be overwritten. -  --index-output=<file>:: 	Instead of writing the results out to `$GIT_INDEX_FILE`, 	write the resulting index in the named file. While the 
diff --git a/git-reset.html b/git-reset.html index d77706a..7e6da10 100644 --- a/git-reset.html +++ b/git-reset.html 
@@ -842,7 +842,8 @@  <dd>   <p>   Resets the index and working tree. Any changes to tracked files in the  - working tree since <code>&lt;commit&gt;</code> are discarded.  + working tree since <code>&lt;commit&gt;</code> are discarded. Any untracked files or  + directories in the way of writing any tracked files are simply deleted.   </p>   </dd>   <dt class="hdlist1">  @@ -1499,7 +1500,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2020-05-04 16:14:16 PDT  + 2021-10-14 10:10:01 PDT   </div>   </div>   </body>  
diff --git a/git-reset.txt b/git-reset.txt index 252e2d4..6f7685f 100644 --- a/git-reset.txt +++ b/git-reset.txt 
@@ -69,7 +69,8 @@    --hard:: 	Resets the index and working tree. Any changes to tracked files in the -	working tree since `<commit>` are discarded. +	working tree since `<commit>` are discarded. Any untracked files or +	directories in the way of writing any tracked files are simply deleted.    --merge:: 	Resets the index and updates the files in the working tree that are 
diff --git a/git-rm.html b/git-rm.html index 2feef97..1d4e134 100644 --- a/git-rm.html +++ b/git-rm.html 
@@ -856,6 +856,17 @@  </p>   </dd>   <dt class="hdlist1">  +--sparse  +</dt>  +<dd>  +<p>  + Allow updating index entries outside of the sparse-checkout cone.  + Normally, <code>git rm</code> refuses to update index entries whose paths do  + not fit within the sparse-checkout cone. See  + <a href="git-sparse-checkout.html">git-sparse-checkout(1)</a> for more.  +</p>  +</dd>  +<dt class="hdlist1">   -q   </dt>   <dt class="hdlist1">  @@ -1022,7 +1033,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-05-06 21:22:01 PDT  + 2021-10-14 10:10:01 PDT   </div>   </div>   </body>  
diff --git a/git-rm.txt b/git-rm.txt index 26e9b28..81bc23f 100644 --- a/git-rm.txt +++ b/git-rm.txt 
@@ -72,6 +72,12 @@  --ignore-unmatch:: 	Exit with a zero status even if no files matched.   +--sparse:: +	Allow updating index entries outside of the sparse-checkout cone. +	Normally, `git rm` refuses to update index entries whose paths do +	not fit within the sparse-checkout cone. See +	linkgit:git-sparse-checkout[1] for more. +  -q::  --quiet:: 	`git rm` normally outputs one line (in the form of an `rm` command) 
diff --git a/git-send-pack.html b/git-send-pack.html index 973c92a..eacc77f 100644 --- a/git-send-pack.html +++ b/git-send-pack.html 
@@ -749,10 +749,10 @@  <h2 id="_synopsis">SYNOPSIS</h2>   <div class="sectionbody">   <div class="verseblock">  -<pre class="content"><em>git send-pack</em> [--all] [--dry-run] [--force] [--receive-pack=&lt;git-receive-pack&gt;]  +<pre class="content"><em>git send-pack</em> [--dry-run] [--force] [--receive-pack=&lt;git-receive-pack&gt;]   [--verbose] [--thin] [--atomic]   [--[no-]signed|--signed=(true|false|if-asked)]  - [&lt;host&gt;:]&lt;directory&gt; [&lt;ref&gt;&#8230;]</pre>  + [&lt;host&gt;:]&lt;directory&gt; (--all | &lt;ref&gt;&#8230;)</pre>   <div class="attribution">   </div></div>   </div>  @@ -993,7 +993,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2020-03-10 15:02:33 PDT  + 2021-10-14 10:10:01 PDT   </div>   </div>   </body>  
diff --git a/git-send-pack.txt b/git-send-pack.txt index 44fd146..be41f11 100644 --- a/git-send-pack.txt +++ b/git-send-pack.txt 
@@ -9,10 +9,10 @@  SYNOPSIS  --------  [verse] -'git send-pack' [--all] [--dry-run] [--force] [--receive-pack=<git-receive-pack>] +'git send-pack' [--dry-run] [--force] [--receive-pack=<git-receive-pack>] 	[--verbose] [--thin] [--atomic] 	[--[no-]signed|--signed=(true|false|if-asked)] -	[<host>:]<directory> [<ref>...] +	[<host>:]<directory> (--all | <ref>...)    DESCRIPTION  ----------- 
diff --git a/git-status.html b/git-status.html index af70274..ab52fc4 100644 --- a/git-status.html +++ b/git-status.html 
@@ -1083,6 +1083,11 @@  </li>   <li>   <p>  +<em>T</em> = file type changed (regular file, symbolic link or submodule)  +</p>  +</li>  +<li>  +<p>   <em>A</em> = added   </p>   </li>  @@ -1098,7 +1103,7 @@  </li>   <li>   <p>  -<em>C</em> = copied  +<em>C</em> = copied (if config option status.renames is set to "copies")   </p>   </li>   <li>  @@ -1112,16 +1117,18 @@  <pre><code>X Y Meaning   -------------------------------------------------   [AMD] not updated  -M [ MD] updated in index  -A [ MD] added to index  +M [ MTD] updated in index  +T [ MTD] type changed in index  +A [ MTD] added to index   D deleted from index  -R [ MD] renamed in index  -C [ MD] copied in index  -[MARC] index and work tree matches  -[ MARC] M work tree changed since index  -[ MARC] D deleted in work tree  -[ D] R renamed in work tree  -[ D] C copied in work tree  +R [ MTD] renamed in index  +C [ MTD] copied in index  +[MTARC] index and work tree matches  +[ MTARC] M work tree changed since index  +[ MTARC] T type changed in work tree since index  +[ MTARC] D deleted in work tree  + R renamed in work tree  + C copied in work tree   -------------------------------------------------   D D unmerged, both deleted   A U unmerged, added by us  @@ -1361,7 +1368,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-06 14:16:38 PDT  + 2021-10-14 10:10:01 PDT   </div>   </div>   </body>  
diff --git a/git-status.txt b/git-status.txt index c33a3d8..4a2c3e0 100644 --- a/git-status.txt +++ b/git-status.txt 
@@ -207,26 +207,29 @@    * ' ' = unmodified  * 'M' = modified +* 'T' = file type changed (regular file, symbolic link or submodule)  * 'A' = added  * 'D' = deleted  * 'R' = renamed -* 'C' = copied +* 'C' = copied (if config option status.renames is set to "copies")  * 'U' = updated but unmerged    ....  X Y Meaning  -------------------------------------------------  [AMD] not updated -M [ MD] updated in index -A [ MD] added to index +M [ MTD] updated in index +T [ MTD] type changed in index +A [ MTD] added to index  D deleted from index -R [ MD] renamed in index -C [ MD] copied in index -[MARC] index and work tree matches -[ MARC] M work tree changed since index -[ MARC] D deleted in work tree -[ D] R renamed in work tree -[ D] C copied in work tree +R [ MTD] renamed in index +C [ MTD] copied in index +[MTARC] index and work tree matches +[ MTARC] M work tree changed since index +[ MTARC] T type changed in work tree since index +[ MTARC] D deleted in work tree + R renamed in work tree + C copied in work tree  -------------------------------------------------  D D unmerged, both deleted  A U unmerged, added by us 
diff --git a/howto/coordinate-embargoed-releases.html b/howto/coordinate-embargoed-releases.html index b0510b6..fd54486 100644 --- a/howto/coordinate-embargoed-releases.html +++ b/howto/coordinate-embargoed-releases.html 
@@ -873,7 +873,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:37 PDT  + 2021-10-14 10:10:40 PDT   </div>   </div>   </body>  
diff --git a/howto/keep-canonical-history-correct.html b/howto/keep-canonical-history-correct.html index 41a376d..80b3b8c 100644 --- a/howto/keep-canonical-history-correct.html +++ b/howto/keep-canonical-history-correct.html 
@@ -938,7 +938,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:37 PDT  + 2021-10-14 10:10:39 PDT   </div>   </div>   </body>  
diff --git a/howto/maintain-git.html b/howto/maintain-git.html index 0d76a83..12b321b 100644 --- a/howto/maintain-git.html +++ b/howto/maintain-git.html 
@@ -1469,7 +1469,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:37 PDT  + 2021-10-14 10:10:39 PDT   </div>   </div>   </body>  
diff --git a/howto/new-command.html b/howto/new-command.html index 71c9c52..7aa4aca 100644 --- a/howto/new-command.html +++ b/howto/new-command.html 
@@ -863,7 +863,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:35 PDT  + 2021-10-14 10:10:37 PDT   </div>   </div>   </body>  
diff --git a/howto/rebase-from-internal-branch.html b/howto/rebase-from-internal-branch.html index f9e3ae2..2339f8c 100644 --- a/howto/rebase-from-internal-branch.html +++ b/howto/rebase-from-internal-branch.html 
@@ -895,7 +895,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:37 PDT  + 2021-10-14 10:10:39 PDT   </div>   </div>   </body>  
diff --git a/howto/rebuild-from-update-hook.html b/howto/rebuild-from-update-hook.html index 82515d7..1c650fd 100644 --- a/howto/rebuild-from-update-hook.html +++ b/howto/rebuild-from-update-hook.html 
@@ -847,7 +847,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:37 PDT  + 2021-10-14 10:10:39 PDT   </div>   </div>   </body>  
diff --git a/howto/recover-corrupted-blob-object.html b/howto/recover-corrupted-blob-object.html index 7aeb62f..aeb746f 100644 --- a/howto/recover-corrupted-blob-object.html +++ b/howto/recover-corrupted-blob-object.html 
@@ -880,7 +880,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:37 PDT  + 2021-10-14 10:10:39 PDT   </div>   </div>   </body>  
diff --git a/howto/recover-corrupted-object-harder.html b/howto/recover-corrupted-object-harder.html index acb2f43..62451bf 100644 --- a/howto/recover-corrupted-object-harder.html +++ b/howto/recover-corrupted-object-harder.html 
@@ -1189,7 +1189,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:37 PDT  + 2021-10-14 10:10:39 PDT   </div>   </div>   </body>  
diff --git a/howto/revert-a-faulty-merge.html b/howto/revert-a-faulty-merge.html index e7c29e8..46b9ded 100644 --- a/howto/revert-a-faulty-merge.html +++ b/howto/revert-a-faulty-merge.html 
@@ -1025,7 +1025,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:36 PDT  + 2021-10-14 10:10:38 PDT   </div>   </div>   </body>  
diff --git a/howto/revert-branch-rebase.html b/howto/revert-branch-rebase.html index 72cd534..38065e8 100644 --- a/howto/revert-branch-rebase.html +++ b/howto/revert-branch-rebase.html 
@@ -907,7 +907,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:35 PDT  + 2021-10-14 10:10:37 PDT   </div>   </div>   </body>  
diff --git a/howto/separating-topic-branches.html b/howto/separating-topic-branches.html index 14d1e30..6bfc862 100644 --- a/howto/separating-topic-branches.html +++ b/howto/separating-topic-branches.html 
@@ -841,7 +841,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:36 PDT  + 2021-10-14 10:10:38 PDT   </div>   </div>   </body>  
diff --git a/howto/setup-git-server-over-http.html b/howto/setup-git-server-over-http.html index df01a31..0d8f59d 100644 --- a/howto/setup-git-server-over-http.html +++ b/howto/setup-git-server-over-http.html 
@@ -1071,7 +1071,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:36 PDT  + 2021-10-14 10:10:38 PDT   </div>   </div>   </body>  
diff --git a/howto/update-hook-example.html b/howto/update-hook-example.html index bc21bc6..30eae42 100644 --- a/howto/update-hook-example.html +++ b/howto/update-hook-example.html 
@@ -930,7 +930,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:36 PDT  + 2021-10-14 10:10:38 PDT   </div>   </div>   </body>  
diff --git a/howto/use-git-daemon.html b/howto/use-git-daemon.html index bbd5909..4e6864f 100644 --- a/howto/use-git-daemon.html +++ b/howto/use-git-daemon.html 
@@ -791,7 +791,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:36 PDT  + 2021-10-14 10:10:38 PDT   </div>   </div>   </body>  
diff --git a/howto/using-merge-subtree.html b/howto/using-merge-subtree.html index 077f5eb..55cdee3 100644 --- a/howto/using-merge-subtree.html +++ b/howto/using-merge-subtree.html 
@@ -848,7 +848,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:35 PDT  + 2021-10-14 10:10:37 PDT   </div>   </div>   </body>  
diff --git a/howto/using-signed-tag-in-pull-request.html b/howto/using-signed-tag-in-pull-request.html index 951628d..8b1606e 100644 --- a/howto/using-signed-tag-in-pull-request.html +++ b/howto/using-signed-tag-in-pull-request.html 
@@ -952,7 +952,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-10-11 12:48:35 PDT  + 2021-10-14 10:10:37 PDT   </div>   </div>   </body>  
diff --git a/technical/api-trace2.html b/technical/api-trace2.html index 86a4886..a74c8eb 100644 --- a/technical/api-trace2.html +++ b/technical/api-trace2.html 
@@ -1515,6 +1515,47 @@  the child process itself.</p></div>   </dd>   <dt class="hdlist1">  +<code>"child_ready"</code>  +</dt>  +<dd>  +<p>  + This event is generated after the current process has started  + a background process and released all handles to it.  +</p>  +<div class="listingblock">  +<div class="content">  +<pre><code>{  + "event":"child_ready",  + ...  + "child_id":2,  + "pid":14708, # child PID  + "ready":"ready", # child ready state  + "t_rel":0.110605 # observed run-time of child process  +}</code></pre>  +</div></div>  +<div class="paragraph"><p>Note that the session-id of the child process is not available to  +the current/spawning process, so the child&#8217;s PID is reported here as  +a hint for post-processing. (But it is only a hint because the child  +process may be a shell script which doesn&#8217;t have a session-id.)</p></div>  +<div class="paragraph"><p>This event is generated after the child is started in the background  +and given a little time to boot up and start working. If the child  +startups normally and while the parent is still waiting, the "ready"  +field will have the value "ready".  +If the child is too slow to start and the parent times out, the field  +will have the value "timeout".  +If the child starts but the parent is unable to probe it, the field  +will have the value "error".</p></div>  +<div class="paragraph"><p>After the parent process emits this event, it will release all of its  +handles to the child process and treat the child as a background  +daemon. So even if the child does eventually finish booting up,  +the parent will not emit an updated event.</p></div>  +<div class="paragraph"><p>Note that the <code>t_rel</code> field contains the observed run time in seconds  +when the parent released the child process into the background.  +The child is assumed to be a long-running daemon process and may  +outlive the parent process. So the parent&#8217;s child event times should  +not be compared to the child&#8217;s atexit times.</p></div>  +</dd>  +<dt class="hdlist1">   <code>"exec"</code>   </dt>   <dd>  @@ -2175,7 +2216,7 @@  <div id="footer">   <div id="footer-text">   Last updated  - 2021-08-24 17:58:56 PDT  + 2021-10-14 10:10:01 PDT   </div>   </div>   </body>  
diff --git a/technical/api-trace2.txt b/technical/api-trace2.txt index b9f3198..ef7fe02 100644 --- a/technical/api-trace2.txt +++ b/technical/api-trace2.txt 
@@ -613,6 +613,46 @@  So this time will be slightly larger than the atexit time reported by  the child process itself.   +`"child_ready"`:: +	This event is generated after the current process has started +	a background process and released all handles to it. ++ +------------ +{ +	"event":"child_ready", +	... +	"child_id":2, +	"pid":14708, # child PID +	"ready":"ready", # child ready state +	"t_rel":0.110605 # observed run-time of child process +} +------------ ++ +Note that the session-id of the child process is not available to +the current/spawning process, so the child's PID is reported here as +a hint for post-processing. (But it is only a hint because the child +process may be a shell script which doesn't have a session-id.) ++ +This event is generated after the child is started in the background +and given a little time to boot up and start working. If the child +startups normally and while the parent is still waiting, the "ready" +field will have the value "ready". +If the child is too slow to start and the parent times out, the field +will have the value "timeout". +If the child starts but the parent is unable to probe it, the field +will have the value "error". ++ +After the parent process emits this event, it will release all of its +handles to the child process and treat the child as a background +daemon. So even if the child does eventually finish booting up, +the parent will not emit an updated event. ++ +Note that the `t_rel` field contains the observed run time in seconds +when the parent released the child process into the background. +The child is assumed to be a long-running daemon process and may +outlive the parent process. So the parent's child event times should +not be compared to the child's atexit times. +  `"exec"`:: 	This event is generated before git attempts to `exec()` 	another command rather than starting a child process.